Skip navigation

Ρύθμιση έντασης φωτεινότητας

Σειριακή επικοινωνία

Για την επικοινωνία του Arduino με τον Η/Υ μέσω της σειριακής θύρας USB, θα πρέπει μέσα στην setup() να γίνει αρχικοποίηση της ταχύτητας επικοινωνίας (baud) μέσω της συνάρτησης Serial.begin(baud). Σύνηθης τιμή για την παράμετρο baud είναι η ταχύτητα 9600 bits/sec, που αντιστοιχεί στην μεταφορά περίπου 1000 χαρακτήρων ASCII το δευτερόλεπτο.

Για την αποστολή δεδομένων ASCII χρησιμοποιούμε τη συνάρτηση Serial.print(data) ή Serial.println(data), όπου στη δεύτερη περίπτωση, μετά τα δεδομένα αποστέλλεται και ο χαρακτήρας αλλαγής γραμμής (carriage return).

Συνάρτηση analogRead()

Οι ελεγκτές Atmega που χρησιμοποιούνται για την πλατφόρμα Arduino περιέχουν έναν ενσωματωμένο αναλογικό-σε-ψηφιακό μετατροπέα (ADC) 6 καναλιών. Ο μετατροπέας διαθέτει ανάλυση 10 bit, επιστρέφοντας ακέραιους από 0 έως 1023. Ενώ η κύρια λειτουργία της αναλογικής ακίδας για τους περισσότερους χρήστες Arduino είναι να διαβάζει αναλογικούς αισθητήρες, οι αναλογικές ακίδες έχουν επίσης όλες τις λειτουργίες των γενικών ακίδων εισόδου/εξόδου.

Η συνάρτηση αναλογικής εισόδου analogRead(pin) διαβάζει την τάση (0~5V) από την καθορισμένη αναλογική ακίδα (pin) Α0-Α6 και επιστρέφει ένα ακέραιο αριθμό από 0 έως 1023.

Εφαρμογή 1

Θέλουμε να κατασκευάσουμε ένα κύκλωμα με Arduino το οποίο θα μετράει την τάση στον δρομέα ενός ποτενσιόμετρου, θα την αποστέλλει σειριακά στον υπολογιστή και θα απεικονίζεται στην οθόνη του Η/Υ μέσω της σειριακής οθόνης του λογισμικού (IDE) του Arduino.

Πραγματοποιήστε την συνδεσμολογία του παρακάτω σχήματος και σχεδιάστε το αντίστοιχο σχέδιο του ηλεκτρονικού κυκλώματος.

Προγραμματίστε τον Arduino σύμφωνα με το παρακάτω διάγραμμα ροής.

Για την εμφάνιση της σειριακής οθόνης, επιλέξτε από το μενού Εργαλεία>Παρακολούθηση σειριακής (Ctrl+Shift+M). Η σειριακή οθόνη εμφανίζει τα σειριακά δεδομένα που αποστέλλονται από την πλακέτα Arduino. Για την αποστολή δεδομένων στην πλακέτα, εισάγουμε κείμενο και πατάμε το κουμπί send. Απαραίτητη προϋπόθεση είναι η επιλογή της κατάλληλης ταχύτητας (baud) από την λίστα που βρίσκεται στο κάτω μέρος της οθόνης. Η ταχύτητα πρέπει να είναι ίδια με την τιμή baud που θα επιλεχθεί στο προγραμματισμό του Arduino με το Serial.begin(baud), αλλιώς η σειριακή οθόνη δεν θα μπορεί να κατανοήσει τους εισερχόμενους χαρακτήρες.

Μαθηματική συνάρτηση map

Η συνάρτηση map() πραγματοποιεί γραμμικό μετασχηματισμό ορίων. Για παράδειγμα, αν η μεταβλητή value παίρνει τιμές στο πεδίο τιμών (0,1023) και θέλουμε οι τιμές της να κυμαίνονται μεταξύ των ορίων (0,255), τότε αυτό το επιτυγχάνουμε με τη βοήθεια της συνάρτησης map(value, 0, 1023, 0, 255).

Συνάρτηση analogWrite()

Η συνάρτηση analogWrite(pin, value) γράφει την αναλογική τιμή value σε μια από τις PWM ακίδες (3, 5, 6, 9, 10, 11) του Arduino, με αποτέλεσμα στην ακίδα να δημιουργηθεί ένα σταθερό τετραγωνικό κύμα (PWM κύμα με συχνότητα 490Hz) του οποίου ο κύκλος λειτουργίας εξαρτάται από την τιμή value (από 0 έως 255).

Η analogWrite() μπορεί να χρησιμοποιηθεί για να ανάψει ένα LED σε διάφορες φωτεινότητες ή να οδηγήσει ένα κινητήρα σε διάφορες ταχύτητες.

Εφαρμογή 2

Θέλουμε να κατασκευάσουμε με Arduino ένα κύκλωμα ελέγχου φωτεινότητας led, το οποίο θα ρυθμίζει την φωτεινότητα ενός led ανάλογα με την τάση που υπάρχει στον δρομέα του ποτενσιόμετρου.

Πραγματοποιήστε την συνδεσμολογία του παρακάτω σχήματος και σχεδιάστε το αντίστοιχο σχέδιο του ηλεκτρονικού κυκλώματος.

Προγραμματίστε τον Arduino σύμφωνα με το παρακάτω διάγραμμα ροής.


(c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ84

Αδειοδοτημένο υπό τους όρους Creative Commons Attribution Share Alike License 4.0